package com.clougence.cloudcanal.dataprocess.datatransform.model;

import java.io.Serializable;
import java.math.BigDecimal;
import java.sql.Types;
import java.util.Date;

import com.clougence.cloudcanal.dataprocess.datatransform.annotation.BuildAnnotation;
import lombok.Data;

/**
 * @author yongSen.wang
 * @date 2021/8/6 17:43
 */
@Data
public class GlanceRecordBO implements Serializable {

    private static final long serialVersionUID = 4844187998414801145L;

    /**主键id.*/
    private Long              id;
    /**版本.*/
    @BuildAnnotation(fieldName = "version", type = Types.VARCHAR)
    private String            version;
    /**屏幕.*/
    @BuildAnnotation(fieldName = "screen", type = Types.VARCHAR)
    private String            screen;
    /**客户端ID，由客户端生成，存储在localeStorage中的浏览器ID.*/
    @BuildAnnotation(fieldName = "client_id", type = Types.VARCHAR)
    private String            clientId;
    /**设备id，基于fingerprintjs生成的设备ID.*/
    @BuildAnnotation(fieldName = "device_id", type = Types.VARCHAR)
    private String            deviceId;
    /**存储在sessionStorage中的会话ID.*/
    @BuildAnnotation(fieldName = "session_id", type = Types.VARCHAR)
    private String            sessionId;
    /**联盟ID.*/
    @BuildAnnotation(fieldName = "union_id", type = Types.VARCHAR)
    private String            unionId;
    /**联盟code.*/
    @BuildAnnotation(fieldName = "union_code", type = Types.VARCHAR)
    private String            unionCode;
    /**联盟requestNo.*/
    @BuildAnnotation(fieldName = "union_request_no", type = Types.VARCHAR)
    private String            unionRequestNo;
    /**用户编号.*/
    @BuildAnnotation(fieldName = "user_id", type = Types.VARCHAR)
    private String            userId;
    /**utm.*/
    @BuildAnnotation(fieldName = "utm", type = Types.VARCHAR)
    private String            utm;
    /**时区偏移量（分钟）.*/
    @BuildAnnotation(fieldName = "timezone", type = Types.VARCHAR)
    private String            timezone;
    /**浏览器语言 navigator.language.*/
    @BuildAnnotation(fieldName = "language", type = Types.VARCHAR)
    private String            language;
    /**网络类型 navigator.connection.*/
    @BuildAnnotation(fieldName = "network", type = Types.VARCHAR)
    private String            network;
    /**cpu.*/
    @BuildAnnotation(fieldName = "cpu_name", type = Types.VARCHAR)
    private String            cpu;
    /**页面标题.*/
    @BuildAnnotation(fieldName = "title", type = Types.VARCHAR)
    private String            title;
    /**事件名称.*/
    @BuildAnnotation(fieldName = "event", type = Types.VARCHAR)
    private String            event;
    /**浏览器当前时间.*/
    @BuildAnnotation(fieldName = "time", type = Types.DATE)
    private String            time;
    /**utm数据.*/
    @BuildAnnotation(fieldName = "utm_data", type = Types.VARCHAR)
    private String            utmData;
    /**事件参数.*/
    @BuildAnnotation(fieldName = "event_data", type = Types.VARCHAR)
    private String            eventData;
    /**国家.*/
    @BuildAnnotation(fieldName = "country", type = Types.VARCHAR)
    private String            country;
    /**goboo选项语言，页面展示语言.*/
    @BuildAnnotation(fieldName = "gb_lang", type = Types.VARCHAR)
    private String            gbLang;
    /**环境.*/
    @BuildAnnotation(fieldName = "env", type = Types.VARCHAR)
    private String            env;
    /**平台类型 1:pc 2:wap 3:android 4:ios.*/
    @BuildAnnotation(fieldName = "platform", type = Types.VARCHAR)
    private String            platform;
    /**原始数据全量.*/
    @BuildAnnotation(fieldName = "source_data", type = Types.VARCHAR)
    private String            sourceData;
    /**utm_source.*/
    @BuildAnnotation(fieldName = "utm_source", type = Types.VARCHAR)
    private String            utmSource;
    /**utm_medium.*/
    @BuildAnnotation(fieldName = "utm_medium", type = Types.VARCHAR)
    private String            utmMedium;
    @BuildAnnotation(fieldName = "utm_campaign", type = Types.VARCHAR)
    private String            utmCampaign;
    @BuildAnnotation(fieldName = "utm_term", type = Types.VARCHAR)
    private String            utmTerm;
    @BuildAnnotation(fieldName = "utm_time", type = Types.DATE)
    private String            utmTime;
    /**统计日期.*/
    @BuildAnnotation(fieldName = "statistics_date", type = Types.DATE)
    private String            statisticsDate;
    /**订单编号.*/
    @BuildAnnotation(fieldName = "order_id", type = Types.VARCHAR)
    private String            orderId;
    /**支付类型.*/
    @BuildAnnotation(fieldName = "payment_type", type = Types.VARCHAR)
    private String            paymentType;
    /**支付金额.*/
    @BuildAnnotation(fieldName = "pay_amount", type = Types.DECIMAL)
    private BigDecimal        payAmount;
    /**支付编号.*/
    @BuildAnnotation(fieldName = "pay_number", type = Types.VARCHAR)
    private String            payNumber;
    /**浏览器客户代理 navigator.userAgent.*/
    @BuildAnnotation(fieldName = "user_agent", type = Types.VARCHAR)
    private String            userAgent;
    /**是否为移动平台.*/
    @BuildAnnotation(fieldName = "agent_mobile", type = Types.INTEGER)
    private Integer           agentMobile;
    /**浏览器类型.*/
    @BuildAnnotation(fieldName = "agent_browser", type = Types.VARCHAR)
    private String            agentBrowser;
    /**浏览器版本.*/
    @BuildAnnotation(fieldName = "agent_version", type = Types.VARCHAR)
    private String            agentVersion;
    /**平台类型.*/
    @BuildAnnotation(fieldName = "agent_platform", type = Types.VARCHAR)
    private String            agentPlatform;
    /**os.*/
    @BuildAnnotation(fieldName = "agent_os", type = Types.VARCHAR)
    private String            agentOs;
    /**系统版本.*/
    @BuildAnnotation(fieldName = "agent_os_version", type = Types.VARCHAR)
    private String            agentOsVersion;
    /**引擎类型.*/
    @BuildAnnotation(fieldName = "agent_engine", type = Types.VARCHAR)
    private String            agentEngine;
    /**引擎版本.*/
    @BuildAnnotation(fieldName = "agent_engine_version", type = Types.VARCHAR)
    private String            agentEngineVersion;
    /**ip地址.*/
    @BuildAnnotation(fieldName = "ip", type = Types.VARCHAR)
    private String            ip;
    /**ip解析得到的国家.*/
    @BuildAnnotation(fieldName = "ip_country", type = Types.VARCHAR)
    private String            ipCountry;
    /**ip解析得到的区域.*/
    @BuildAnnotation(fieldName = "ip_region", type = Types.VARCHAR)
    private String            ipRegion;
    /**ip解析得到的省.*/
    @BuildAnnotation(fieldName = "ip_province", type = Types.VARCHAR)
    private String            ipProvince;
    /**ip解析得到的城市.*/
    @BuildAnnotation(fieldName = "ip_city", type = Types.VARCHAR)
    private String            ipCity;
    /**ip解析得到的isp.*/
    @BuildAnnotation(fieldName = "ip_isp", type = Types.VARCHAR)
    private String            ipIsp;
    /**网页地址.*/
    @BuildAnnotation(fieldName = "url", type = Types.VARCHAR)
    private String            url;
    /**网页地址host.*/
    @BuildAnnotation(fieldName = "url_host", type = Types.VARCHAR)
    private String            urlHost;
    /**网页地址path.*/
    @BuildAnnotation(fieldName = "url_path", type = Types.VARCHAR)
    private String            urlPath;
    /**网页地址host+path.*/
    @BuildAnnotation(fieldName = "url_host_path", type = Types.VARCHAR)
    private String            urlHostPath;
    /**网页来源 document.referrer.*/
    @BuildAnnotation(fieldName = "referrer", type = Types.VARCHAR)
    private String            referrer;
    /**网页来源host.*/
    @BuildAnnotation(fieldName = "referrer_host", type = Types.VARCHAR)
    private String            referrerHost;
    /**网页来源path.*/
    @BuildAnnotation(fieldName = "referrer_path", type = Types.VARCHAR)
    private String            referrerPath;
    /**网页来源host+path.*/
    @BuildAnnotation(fieldName = "referrer_host_path", type = Types.VARCHAR)
    private String            referrerHostPath;
    /**创建时间.*/
    private Date              createTime;
    /**更新时间.*/
    private Date              updateTime;
}
